/**
   测试修改切片看会不会对原来得值产生影响
   1.如果是可变切片，会影响原来的
   2.一个变量定义多个子切片，这多个子切片可以同时用吗？ 应该不行吧?
     多个子切片能共存(不可变类型)!!!
   
   以下两个函数的示例都表明了：
   a.一个切片要立刻用，否则其它人在切就会丢失引用，引发编译错误
   b.定义了一个切片后不用，立刻使用原来被引用的，则会导致引用失效(自动归还了)
   
   
   
 */
fn main(){
	test_mut_slice();
	test_multi_slice();
}

fn test_mut_slice(){
	let mut numbers = [1, 2, 3, 4, 5];  
	let slice: &mut [i32] = &mut numbers[0..1]; // 获取整个数组的可变切片  
	slice[0] = 10; // 修改切片中的第一个元素，这也会修改原始数组  
	println!("{:?}", numbers); // 输出: [10, 2, 3, 4, 5]
	// println!("{:?}", slice); //  根据所有权原则，这里再使用slice会报错，因为前面一个语句已经归还了?	
}

fn test_multi_slice(){
	let mut numbers = [1, 2, 3, 4, 5];  
	let slice: &mut [i32] = &mut numbers[0..1]; // 获取整个数组的可变切片  
	let slice2=&numbers[2..];
	//println!("{:?},{:?}", slice,slice2); // 这里会触发错误
	// println!("{:?}", slice); //  根据所有权原则，这里再使用slice会报错，因为前面一个语句已经归还了?	
	//println!("{}",slice[0]);
}